package org.example.blog.utils;

import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.util.UUID;

public class SecurityUtils {

    //用户注册时 注册的密码
    // 明文+盐值 加密
   
    public static String encrypt(String password) {
        //生成随机盐值
        String salt = UUID.randomUUID().toString().replace("-", "");
        //对 明文+盐值  进行MD5加密 =>   md5(明文+盐值)
        String finalPassword = DigestUtils.md5DigestAsHex((password + salt).getBytes());
        return salt + finalPassword;
    }


    //用户登录时进行校验   明文+盐值
    //inputPassword  用户登录时输入的密码
    //sqlPassword  数据库中password字段存储的信息   盐值 + md5(明文+盐值)

    public static boolean verify(String inputPassword, String sqlPassword) {
        if (!StringUtils.hasLength(inputPassword)) {
            return false;
        }
        if (sqlPassword == null || sqlPassword.length() != 64) {
            return false;
        }
        //获取盐值
        String salt = sqlPassword.substring(0, 32);
        //根据用户登录输入的密码和盐值, 进行加密    md5(明文+盐值)
        String finalPassword = DigestUtils.md5DigestAsHex((inputPassword + salt).getBytes());

        return (salt + finalPassword).equals(sqlPassword);
    }

    public static void main(String[] args) {
        String finnalPassword = encrypt("08042");
        System.out.println(finnalPassword);
        System.out.println(verify("08042",finnalPassword));
    }
    
}
